import { Router } from 'express';
import { MongoClient } from 'mongodb';

const router = Router();

// MongoDB 配置
const mongoUrl = 'mongodb://localhost:27017';
const dbName = 'risk_backend';
const collectionName = 'company_scores';

// 获取所有企业详情（按最新日期排序）
router.get('/', async (req, res) => {
  const client = new MongoClient(mongoUrl);
  try {
    await client.connect();
    const db = client.db(dbName);
    const collection = db.collection(collectionName);

    // 按 InfoPubDate 降序排序，获取最新数据
    const enterprises = await collection.find().sort({ InfoPubDate: -1 }).toArray();
    res.json(enterprises);
  } catch (error: any) {
    res.status(500).json({ message: '获取企业数据失败', error: error.message });
  } finally {
    await client.close();
  }
});

// 根据企业名称获取最新详情
router.get('/:name', async (req, res) => {
  const client = new MongoClient(mongoUrl);
  try {
    await client.connect();
    const db = client.db(dbName);
    const collection = db.collection(collectionName);

    // 按 InfoPubDate 降序排序，获取指定企业的最新数据
    const enterprise = await collection
      .find({ LComNm: req.params.name })
      .sort({ InfoPubDate: -1 })
      .limit(1)
      .toArray();

    if (enterprise.length > 0) {
      res.json(enterprise[0]);
    } else {
      res.status(404).json({ message: '企业未找到' });
    }
  } catch (error: any) {
    res.status(500).json({ message: '获取企业数据失败', error: error.message });
  } finally {
    await client.close();
  }
});

// 根据企业名称获取所有日期的数据（按日期排序）
router.get('/:name/trends', async (req, res) => {
  const client = new MongoClient(mongoUrl);
  try {
    await client.connect();
    const db = client.db(dbName);
    const collection = db.collection(collectionName);

    // 按 InfoPubDate 升序排序，获取指定企业的所有数据
    const trends = await collection
      .find({ LComNm: req.params.name })
      .sort({ InfoPubDate: 1 }) // 按日期升序排序
      .toArray();

    if (trends.length > 0) {
      res.json(trends);
    } else {
      res.status(404).json({ message: '企业未找到或无数据' });
    }
  } catch (error: any) {
    res.status(500).json({ message: '获取企业趋势数据失败', error: error.message });
  } finally {
    await client.close();
  }
});

export default router;